package day07;

public class StaticInnerClass {
    public static void main(String[] args) {
        //外部其他类如何访问这个静态内部类
        //外部其他类 使用我们的静态内部类才行！！！
        //1.方法1 因为静态内部类思可以挺过类名直接进行访问的
        //这个和成员内部类不一样 成员内部类需要先创建对象才行（前提是你需要遵循访问的权限才行）
        Outer02.Inner02 inner02 = new Outer02.Inner02();
        //2.方式二 编写一个非静态方法 可以返回静态内部类的对象实例
        Outer02.Inner02 inner021 = new Outer02().getInner02();
        //3. 编写一个静态方法 可以返回静态内部类的对象实例(这个仅限于是静态内部类的时候)
        Outer02.Inner02 inner03 = Outer02.getInner03();//这个就更方便了 我们直接返回一个实例对象进行处理操作



    }
}
//静态内部类
class Outer02{
    private int age=10;
    private static String name="李四";
    //1.放在外部类的成员位置
    //2.使用static修饰 可以访问静态成员 但是不能访问非静态成员 这个时候静态类的属性！！ 这个其实和
    //作用域还是和其他的内部类一样 在整个类体都可以使用
    //静态内部类访问外部类 可以直接访问所有静态成员！！！！
    public static void hh(){

    }
    static class Inner02{
        private static String name="王五";
        public void say(){
            hh();//这样就是可以进行访问的
            System.out.println(name);
            System.out.println(Outer02.name);//这里我们没有必要在加this关键字了 因为我们这里是静态的 我们创建了的话
            //就可以直接通过类名进行访问没有必要
        }

    }
    public void setName(){//外部类访问静态内部类的方式就是先创建对象 再进行访问
        Inner02 inner02 = new Inner02();
    }
    public Inner02 getInner02(){
        return new Inner02();
    }
    public  static Inner02 getInner03(){
        return new Inner02();
    }
}
